package com.bjsxt.set1;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

/**
 * HashSet: 哈希表  无序  唯一
 * LinkedHashSet 哈希表+链表 有序（添加顺序） 唯一
 * TreeSet : 红黑树（二叉树、二叉查找树、二叉平衡树）有序（自然顺序） 唯一
 *
 * Set是无序的，相比Collection没有增加任何方法，List相比Collection增加和索引相关的方法
 * get(i) remove(i)  add(i,elem) set(i,elem)
 */
public class TestSet1 {
    public static void main(String[] args) {
        //创建Set集合对象
        //Set <String> set =  new HashSet();//快
        //Set <String> set =  new LinkedHashSet();//快+有序
        Set <String> set =  new TreeSet();
        //添加元素
        set.add("JavaSE");
        set.add("MySQL");
        set.add("JavaSE");
        set.add("Web");
        set.add("javaEE");

        //遍历元素
        System.out.println(set.size());
        System.out.println(set);

        //System.out.println(set.get(i));
        //遍历set方法1：for-each
        for(String elem:set){
            System.out.println(elem);
        }
//        for (int i = 0; i < set.size(); i++) {
//            set.get(i)
//        }

        //遍历set方法2：Iterator
        Iterator<String> it = set.iterator();
        while(it.hasNext()){
            String elem = it.next();
            System.out.println(elem);
        }
        //遍历set方法3：lambda表达式+流式编程
        set.forEach((elem)->System.out.println(elem+"!"));


    }
}
